/**
 * 工具模块，不依赖第三方代码
 */
const common = common || {}

common.Base_URL = location.host

/**
 * 工具模块，不依赖第三方代码
 * 包含：类型判断
 */
common.Utils = {
    UUID32() {
        var d = new Date().getTime()
        if (window.performance && typeof window.performance.now === 'function') {
            d += performance.now() // use high-precision timer if available
        }
        var uuid = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
            var r = (d + Math.random() * 16) % 16 | 0
            d = Math.floor(d / 16)
            return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
        })
        return uuid
    },
    rand(m) {
        var num = ''
        for (var i = 0; i < m; i++) {
            var val = parseInt(Math.random() * 10, 10)
            if (i === 0 && val === 0) {
                i--
                continue
            }
            num += val
        }
        return num
    },
    /**
     * 对传入的时间值进行格式化。后台传入前台的时间有两种个是：Sql时间和.Net时间
     * @param {String|Date} sValue 传入的时间字符串
     * @param {dateFormat | bool} dateFormat  日期格式，日期格式：eg：'Y-m-d H:i:s'
     * @return {String} 2014-03-01 这种格式
     * @example
     * 1) Sql时间格式：2015-02-24T00:00:00
     * 2) .Net时间格式：/Date(1410744626000)/
     */
    getDateTimeStr: function(sValue, dateFormat) {
        if (dateFormat === undefined) {
            dateFormat = 'Y-m-d' // 默认显示年月日
        }

        var dt
        // 1.先解析传入的时间对象，
        if (sValue) {
            if (toString.call(sValue) !== '[object Date]') {
                // 不为Date格式，就转换为DateTime类型
                sValue = sValue + ''
                if (sValue.indexOf('T') > 0) {
                    // 1)格式：2015-02-24T00:00:00
                    var timestr = sValue.replace('T', ' ').replace(/-/g, '/') // => 2015/02/24 00:00:00
                    dt = new Date(timestr)
                } else if (sValue.indexOf('Date') >= 0) {
                    // 2).Net格式：/Date(1410744626000)/
                    // Convert date type that .NET can bind to DateTime
                    // var date = new Date(parseInt(sValue.substr(6)));
                    var timestrE = sValue.toString().replace(/\/Date\((\d+)\)\//gi, '$1') //
                    dt = new Date(Math.abs(timestrE))
                } else {
                    dt = new Date(sValue)
                }
            } else {
                dt = sValue
            }
        }

        // 2.转换
        // 1)转换成对象 'Y-m-d H:i:s'
        var obj = {} // 返回的对象，包含了 year(年)、month(月)、day(日)
        obj.Y = dt.getFullYear() // 年
        obj.m = dt.getMonth() + 1 // 月
        obj.d = dt.getDate() // 日期
        obj.H = dt.getHours()
        obj.i = dt.getMinutes()
        obj.s = dt.getSeconds()
        // 2.2单位的月、日都转换成双位
        if (obj.m < 10) {
            obj.m = '0' + obj.m
        }
        if (obj.d < 10) {
            obj.d = '0' + obj.d
        }
        if (obj.H < 10) {
            obj.H = '0' + obj.H
        }
        if (obj.i < 10) {
            obj.i = '0' + obj.i
        }
        if (obj.s < 10) {
            obj.s = '0' + obj.s
        }
        // 3.解析
        var rs = dateFormat
            .replace('Y', obj.Y)
            .replace('m', obj.m)
            .replace('d', obj.d)
            .replace('H', obj.H)
            .replace('i', obj.i)
            .replace('s', obj.s)

        return rs
    },
    /**
 * 递归获取叶子节点
 * @param {*} json
 * @param {*} arr
 * @returns
 */
    queryList(json, arr) {
        for (let i = 0; i < json.length; i++) {
            const sonList = json[i]._children
            if (sonList.length === 0) {
                arr.push(json[i])
            } else {
                this.queryList(sonList, arr)
            }
        }
        return arr
    },
    IsURL(str_url) {
        var strRegex = '^((https|http|ftp|rtsp|mms)?://)' +
 "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" +
  '(([0-9]{1,3}\.){3}[0-9]{1,3}' +
  '|' +
  "([0-9a-z_!~*'()-]+\.)*" +
  '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.' +
  '[a-z]{2,6})' +
  '(:[0-9]{1,4})?' +
  '((/?)|' +
  "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"
        var re = new RegExp(strRegex)
        if (re.test(str_url)) {
            return (true)
        } else {
            return (false)
        }
    }
}
export default common
